package com.tarena.lbs.content.controller;

import com.tarena.lbs.base.protocol.exception.BusinessException;
import com.tarena.lbs.base.protocol.model.Result;
import com.tarena.lbs.base.protocol.pager.PageResult;
import com.tarena.lbs.content.pojo.param.ArticleActionParam;
import com.tarena.lbs.content.pojo.param.ArticleContentParam;
import com.tarena.lbs.content.pojo.query.ArticleQuery;
import com.tarena.lbs.content.pojo.vo.ArticleActionPageResultVO;
import com.tarena.lbs.content.pojo.vo.ArticleVO;
import com.tarena.lbs.content.service.ArticleService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Set;

/**
 * 文章业务模块控制器
 */
@Tag(name = "文章相关功能接口")
@Slf4j
@RestController
public class ArticleController {
	
	@Autowired
	private ArticleService articleService;
	
	
	/**
	 * 文章保存
	 *
	 * @param param 文章内容参数
	 * @return 操作结果
	 * @throws BusinessException 业务异常
	 */
	@Operation(summary = "文章保存")
	@PostMapping("/admin/content/article/insert")
	public Result<Void> addArticle(ArticleContentParam param) throws BusinessException {
		log.debug(">>>文章保存-服务：{}", param);
		articleService.saveArticleToEs(param);
		return Result.success();
	}
	
	/**
	 * 文章详情
	 *
	 * @param id 文章ID
	 * @return 文章详情VO对象
	 * @throws BusinessException 业务异常
	 */
	@Operation(summary = "文章详情")
	@GetMapping("/admin/content/article/get")
	public Result<ArticleVO> articleDetail(String id) throws BusinessException {
		log.debug(">>>文章详情-服务：{}", id);
		ArticleVO articleVO = articleService.getArticleDetailById(id);
		return new Result<>(articleVO);
	}
	
	@Operation(summary = "用户行为记录")
	@PostMapping("/admin/content/article/behavior")
	public Result<Void> articleBehavior(ArticleActionParam param) throws BusinessException {
		log.debug(">>>用户行为记录-服务：{}", param);
		articleService.articleAction(param);
		return Result.success();
	}
	
	
	
	
	
	
	
	
	
	
	@Operation(summary = "文章分页列表查询")
	@GetMapping("/admin/content/article/list")
	public Result<PageResult<ArticleVO>> pageList(ArticleQuery articleQuery)
			throws BusinessException {
		return null;
	}
	
	
	@Operation(summary = "文章标签集合")
	@GetMapping("/admin/content/article/getArticleLabel")
	public Result<Set<String>> articleLabels(ArticleQuery articleQuery) throws BusinessException {
		
		return null;
	}
	
	
	@Operation(summary = "查询已经点赞 收藏 访问过的文章")
	@GetMapping("admin/content/article/getBehaviorList")
	public Result<ArticleActionPageResultVO> getBehaviorLists(ArticleQuery query)
			throws BusinessException {
		return null;
	}
}
